<?php
class ApiCenter_ProductApi_ImageController extends Mage_Core_Controller_Front_Action{
        private  $config = array(
                "uploadimage"=>array(
                    "ActionName"=>"uploadimage",
                    "FieldName"=>"upfile",
                    "MaxSize"=>"1024000",
                    "AllowFiles"=>array(".png", ".jpg", ".jpeg", ".gif", ".bmp"),
                    "CompressEnable"=>true,
                    "CompressBorder"=>1000,
                    "InsertAlign"=>"none",
                    "UrlPrefix"=>"",
                    "Floader"=>"image"
                )
        );

        public function imageSaveAction()
        {
            try {
//                 if(!$this->getRequest()->getPost("rumall")){
//                     throw new Exception("can not validate");
//                 }
                $action = $this->getRequest()->getParam("action");
                $callback =  $this->getRequest()->getParam("callback");
                $id = $this->getRequest()->getParam("vendor",null);
               $vendor = Mage::getModel("vendors/vendor")->load($id);
                if( !$vendor ->getId()){
                    exit;
                }
               if($action =="config"){
                   echo  $callback . '(' . json_encode($this->uploadConfig()) . ')';
                   exit;
               }
              
               if(isset($this->config[$action])){
                   $name= $this->config[$action]['FieldName'];
                   $floader = $this->config[$action]['Floader'];
                   $AllowFiles =  $this->config[$action]['AllowFiles'];
                 if(isset($_FILES[$name]['name']) and (file_exists($_FILES[$name]['tmp_name']))) {
                 
                    $uploader = new Varien_File_Uploader($name);
                    $uploader->setAllowedExtensions(array('jpg','jpeg','gif','png')); // or pdf or anything
                    
                    $uploader->setAllowRenameFiles(true);
                    
                    // setAllowRenameFiles(true) -> move your file in a folder the magento way
                    // setAllowRenameFiles(true) -> move your file directly in the $path folder
                    $uploader->setFilesDispersion(false);
                    
                    $path = Mage::getBaseDir('media') . DS."catalog".DS."product".DS."UE".DS."vendor".$id.DS.$floader;
                    $urlpath = Mage::getBaseUrl("media") ."catalog".DS."product".DS."UE".DS."vendor".$id.DS.$floader;
                    $result =   $uploader->save($path, $_FILES[$name]['name']);
                    
                    
                    $data['state'] = "SUCCESS";
                    $data['url'] =$urlpath.DS.$result['name'];
                    $data['original'] =  $_FILES[$name]['name'];
                    $data['title'] = $result['name'];
                    $data['size'] = $result['size'];
                    $data['type'] =strrchr($result['name'], '.');
                    
//                     header('Access-Control-Allow-Origin: *');
//                     header('Access-Control-Allow-Methods: POST');
//                     header('Access-Control-Max-Age: 1000');
//                     header('X-Frame-Options: ALLOW-FROM 10.118.16.19');
                    echo json_encode($data);
                         
                  }
               }else{
                   echo "not found!";
               }
            }catch(Exception $e) {
                
                echo $e->getMessage();
            }
            
        }
        protected function uploadConfig(){
            $path = Mage::getBaseUrl('media') . DS."catalog".DS."product".DS."UE".DS.date("Ymd").DS;
            /* 前后端通信相关的配置,注释只允许使用多行方式 */
            $config = array(
                /* 上传图片配置项 */
                "imageActionName"=>$this->config['uploadimage']['ActionName'], /* 执行上传图片的action名称 */
                "imageFieldName"=>$this->config['uploadimage']['FieldName'], /* 提交的图片表单名称 */
                "imageMaxSize"=>$this->config['uploadimage']['MaxSize'], /* 上传大小限制，单位B */
                "imageAllowFiles"=>$this->config['uploadimage']['AllowFiles'], /* 上传图片格式显示 */
                "imageCompressEnable"=> $this->config['uploadimage']['CompressEnable'], /* 是否压缩图片,默认是true */
                "imageCompressBorder"=> $this->config['uploadimage']['CompressBorder'], /* 图片压缩最长边限制 */
                "imageInsertAlign"=> $this->config['uploadimage']['InsertAlign'], /* 插入的图片浮动方式 */
                "imageUrlPrefix"=>$this->config['uploadimage']['UrlPrefix']
                , /* 图片访问路径前缀 */
                "imagePathFormat"=>urlencode($path."image") , /* 上传保存路径,可以自定义保存路径和文件名格式 */
                /* {filename} 会替换成原文件名,配置这项需要注意中文乱码问题 */
                /* {rand:6} 会替换成随机数,后面的数字是随机数的位数 */
                /* {time} 会替换成时间戳 */
                /* {yyyy} 会替换成四位年份 */
                /* {yy} 会替换成两位年份 */
                /* {mm} 会替换成两位月份 */
                /* {dd} 会替换成两位日期 */
                /* {hh} 会替换成两位小时 */
                /* {ii} 会替换成两位分钟 */
                /* {ss} 会替换成两位秒 */
                /* 非法字符 \ : * ? " < > | */
                /* 具请体看线上文档: fex.baidu.com/ueditor/#use-format_upload_filename */
        
                /* 涂鸦图片上传配置项 */
                "scrawlActionName"=> "uploadscrawl", /* 执行上传涂鸦的action名称 */
                "scrawlFieldName"=> "upfile", /* 提交的图片表单名称 */
                "scrawlPathFormat"=> "/ueditor/php/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */
                "scrawlMaxSize"=> 2048000, /* 上传大小限制，单位B */
                "scrawlUrlPrefix"=> "", /* 图片访问路径前缀 */
                "scrawlInsertAlign"=> "none",
        
                /* 截图工具上传 */
                "snapscreenActionName"=> "uploadimage", /* 执行上传截图的action名称 */
                "snapscreenPathFormat"=> "/ueditor/php/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */
                "snapscreenUrlPrefix"=> "", /* 图片访问路径前缀 */
                "snapscreenInsertAlign"=> "none", /* 插入的图片浮动方式 */
        
                /* 抓取远程图片配置 */
                "catcherLocalDomain"=> ["127.0.0.1", "localhost", "img.baidu.com"],
                "catcherActionName"=> "catchimage", /* 执行抓取远程图片的action名称 */
                "catcherFieldName"=> "source", /* 提交的图片列表表单名称 */
                "catcherPathFormat"=> "/ueditor/php/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */
                "catcherUrlPrefix"=> "", /* 图片访问路径前缀 */
                "catcherMaxSize"=> 2048000, /* 上传大小限制，单位B */
                "catcherAllowFiles"=> array(".png", ".jpg", ".jpeg", ".gif", ".bmp"), /* 抓取图片格式显示 */
        
                /* 上传视频配置 */
                "videoActionName"=> "uploadvideo", /* 执行上传视频的action名称 */
                "videoFieldName"=> "upfile", /* 提交的视频表单名称 */
                "videoPathFormat"=> "/ueditor/php/upload/video/{yyyy}{mm}{dd}/{time}{rand=>6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */
                "videoUrlPrefix"=> "", /* 视频访问路径前缀 */
                "videoMaxSize"=> 102400000, /* 上传大小限制，单位B，默认100MB */
                "videoAllowFiles"=>array(
                    ".flv", ".swf", ".mkv", ".avi", ".rm", ".rmvb", ".mpeg", ".mpg",
                    ".ogg", ".ogv", ".mov", ".wmv", ".mp4", ".webm", ".mp3", ".wav", ".mid"), /* 上传视频格式显示 */
        
                /* 上传文件配置 */
                "fileActionName"=> "uploadfile", /* controller里,执行上传视频的action名称 */
                "fileFieldName"=> "upfile", /* 提交的文件表单名称 */
                "filePathFormat"=> "/ueditor/php/upload/file/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */
                "fileUrlPrefix"=> "", /* 文件访问路径前缀 */
                "fileMaxSize"=> 51200000, /* 上传大小限制，单位B，默认50MB */
                "fileAllowFiles"=> array(
                    ".png", ".jpg", ".jpeg", ".gif", ".bmp",
                    ".flv", ".swf", ".mkv", ".avi", ".rm", ".rmvb", ".mpeg", ".mpg",
                    ".ogg", ".ogv", ".mov", ".wmv", ".mp4", ".webm", ".mp3", ".wav", ".mid",
                    ".rar", ".zip", ".tar", ".gz", ".7z", ".bz2", ".cab", ".iso",
                    ".doc", ".docx", ".xls", ".xlsx", ".ppt", ".pptx", ".pdf", ".txt", ".md", ".xml"
                ), /* 上传文件格式显示 */
        
                /* 列出指定目录下的图片 */
                "imageManagerActionName"=> "listimage", /* 执行图片管理的action名称 */
                "imageManagerListPath"=> "/ueditor/php/upload/image/", /* 指定要列出图片的目录 */
                "imageManagerListSize"=> 20, /* 每次列出文件数量 */
                "imageManagerUrlPrefix"=> "", /* 图片访问路径前缀 */
                "imageManagerInsertAlign"=> "none", /* 插入的图片浮动方式 */
                "imageManagerAllowFiles"=>array(".png", ".jpg", ".jpeg", ".gif", ".bmp"), /* 列出的文件类型 */
        
                /* 列出指定目录下的文件 */
                "fileManagerActionName"=> "listfile", /* 执行文件管理的action名称 */
                "fileManagerListPath"=> "/ueditor/php/upload/file/", /* 指定要列出文件的目录 */
                "fileManagerUrlPrefix"=> "", /* 文件访问路径前缀 */
                "fileManagerListSize"=> 20, /* 每次列出文件数量 */
                "fileManagerAllowFiles"=>array(
                    ".png", ".jpg", ".jpeg", ".gif", ".bmp",
                    ".flv", ".swf", ".mkv", ".avi", ".rm", ".rmvb", ".mpeg", ".mpg",
                    ".ogg", ".ogv", ".mov", ".wmv", ".mp4", ".webm", ".mp3", ".wav", ".mid",
                    ".rar", ".zip", ".tar", ".gz", ".7z", ".bz2", ".cab", ".iso",
                    ".doc", ".docx", ".xls", ".xlsx", ".ppt", ".pptx", ".pdf", ".txt", ".md", ".xml"
                ) /* 列出的文件类型 */
            );
            return $config;
        }
        
        public  function returnFileListAction(){
            
            $i = 0;
            
            $floader = "image";
                
            $id = $this->getRequest()->getParam("vendor");
            
            $start = $this->getRequest()->getParam("start",0);
            
            $size = $this->getRequest()->getParam("size",20);
            
            $images =array(
                "state" => "SUCCESS",
                "list"    => array(),
                "start" => $start,
            );
            
            $length = $start+$size;
            $vendor = Mage::getModel("vendors/vendor")->load($id);
            if( !$vendor ->getId()){
               return $images;
            }
            
            $hostdir=Mage::getBaseDir('media') . DS."catalog".DS."product".DS."UE".DS."vendor". $id . DS .$floader;
            
            $urlpath = Mage::getBaseUrl("media") ."catalog".DS."product".DS."UE".DS."vendor".$id.DS.$floader;
            //获取本文件目录的文件夹地址
            
            $filesnames = scandir($hostdir);
            
            //获取也就是扫描文件夹内的文件及文件夹名存入数组 $filesnames
            
            foreach ($filesnames as $k => $name) {
             
                if(!is_dir($hostdir."/".$name)){
                    $i++;
                   if($k>=$start+2&&$k<=$length){
                        if ( in_array(strrchr($name,"."),array(".png", ".jpg", ".jpeg", ".gif", ".bmp")) ){
                            //                     echo $name . "<br/>";
                            $images['list'][$k]['url'] =$urlpath.DS.$name ;
                            $images['list'][$k]['mtime'] =filemtime($hostdir.DS. $name);
                        }
                     }
                }
              }
              
              $sort = array(
                  'direction' => 'SORT_ASC', //排序顺序标志 SORT_DESC 降序；SORT_ASC 升序
                  'field'     => 'mtime',       //排序字段
              );
              $arrSort = array();
              foreach($images['list'] AS $uniqid => $row){
                  foreach($row AS $key=>$value){
                      $arrSort[$key][$uniqid] = $value;
                  }
              }
              $images['total'] =$i;
              array_multisort($arrSort[$sort['field']], constant($sort['direction']), $images['list']);
              echo json_encode($images);
        }
}
 